package day03;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;

/**
 * @author Xiao
 * @date 2021/8/19
 */
public class JDBCDemo02 {
    /**
     * JDBC API详解：
     * 	JDBC 事务管理：Connection接口中定义了3个对应的方法
     * a.开启事务：setAutoCommit(boolean autoCommit)——true为自动提交事务；false为手动提交事务，即为开启事务。
     * b.提交事务：commit()
     * c.回滚事务：rollback()
     */
    public static void main(String[] args) throws Exception {
        String url = "jdbc:mysql:///day03?useSSL=false";
        String username = "root";   // 数据库用户名
        String password = "1234";   // 数据库密码
        Connection conn = DriverManager.getConnection
                (url, username, password);  // 获取连接
        String sql1 = "update account set money = 2000 where id = 1"; // 定义SQL语句
        String sql2 = "update account set money = 2000 where id = 2"; // 定义SQL语句
        Statement stmt = conn.createStatement();    // 获取执行对象
        try {
            conn.setAutoCommit(false);  //  开启事务
            int count1 = stmt.executeUpdate(sql1);    // 执行SQL
            int count2 = stmt.executeUpdate(sql2);    // 执行SQL
            System.out.println(count1);  // 处理返回结果
            System.out.println(count2);  // 处理返回结果
            // int i = 2 / 0;   // 模拟异常
            conn.commit();  // 提交事务
        } catch (Exception throwables) {
            conn.rollback();    // 回滚事务
            throwables.printStackTrace();
        } finally { //  释放资源
            stmt.close();   // 释放stmt
            conn.close();   // 释放conn
        }
    }
}
